﻿Public Class Orden_de_Compras_Modificar
    Dim acceso As New acceso
    Dim prov As New Proveedor()
    Dim orden As New OrdenCompra()
    Dim funciones As New Funciones()
    Public Property _prov As Proveedor
        Get
            Return prov
        End Get
        Set(ByVal value As Proveedor)
            prov = value
        End Set
    End Property
    Public Property _orden As OrdenCompra
        Get
            Return orden
        End Get
        Set(ByVal value As OrdenCompra)
            orden = value
        End Set
    End Property
    Private Sub DTP_fecha_necesidad_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DTP_fecha_necesidad.ValueChanged
        If DTP_fecha_necesidad.Value.Date < DateTime.Now.Date Then
            MessageBox.Show("La fecha de Necesidad no puede ser menor a la fecha actual", "ATENCION")
            DTP_fecha_necesidad.Value = DateTime.Now.Date
        End If
    End Sub
    Private Sub cargarGrilla()
        Dim tabla As New Data.DataTable()
        tabla = acceso.leo_tabla("VistaProductoXProveedor WHERE nroProveedor = " & prov._idProveedor)
        DGV_Productos.DataSource = tabla
        acomodarGrilla()
    End Sub
    Private Sub acomodarGrilla()
        DGV_Productos.Columns("razonSocial").Visible = False
        DGV_Productos.Columns("nombre").HeaderText = "Producto"
        DGV_Productos.Columns("codProductoProveedor").HeaderText = "Codigo del Producto del Proveedor"
        DGV_Productos.Columns("precioProveedor").HeaderText = "Costo"
        DGV_Productos.Columns("unidadMedida").HeaderText = "Unidad Medida"
        DGV_Productos.Columns("marca").HeaderText = "Marca"
        DGV_Productos.Columns("tipoProducto").HeaderText = "Tipo Producto"
        DGV_Productos.Columns("nroProveedor").Visible = False
        DGV_Productos.Columns("codProducto").Visible = False
        DGV_Productos.Columns("idMarca").Visible = False
        DGV_Productos.Columns("idTipoProducto").Visible = False
        DGV_Productos.Columns("idUnidad").Visible = False
    End Sub

    Private Sub Orden_de_Compras_Modificar_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        lbl_proveedor.Text = prov._razonSocial
        DTP_fecha_creacion.Text = orden._fechaCreacion.Date
        DTP_fecha_necesidad.Text = orden._fecheNecesidad.Date
        cargarGrilla()
        cargarGrillaDetalle()
    End Sub
    Private Sub cargarGrillaDetalle()
        Dim tabla As New Data.DataTable()
        tabla = acceso.leo_tabla("Vista_Detalle_Orden_Compra WHERE nroOrden = " & orden._nroOrden)
        For i As Integer = 0 To tabla.Rows.Count - 1 Step 1
            DGV_Productos_Orden.Rows.Add(tabla.Rows(i).Item("codProducto"), tabla.Rows(i).Item("nombre"), tabla.Rows(i).Item("cantidad"), tabla.Rows(i).Item("unidad"), tabla.Rows(i).Item("precio"), tabla.Rows(i).Item("cantidad") * tabla.Rows(i).Item("precio"))
        Next



    End Sub

    Private Sub txt_stock_riesgo_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles txt_cantidad.KeyPress
        eventArgs.Handled = funciones.validarDouble(eventArgs.KeyChar, txt_cantidad.Text & CChar(eventArgs.KeyChar))
    End Sub

    Private Sub btn_agregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_agregar.Click
        If txt_cantidad.Text = "" Then
            MessageBox.Show("Necesita ingresar la cantidad", "Atencion")
            txt_cantidad.Focus()
            Return
        End If
        Dim result As Boolean = False
        Dim compararProd As Integer = DGV_Productos.Rows(DGV_Productos.CurrentRow.Index).Cells("codProducto").Value
        For i As Integer = 0 To DGV_Productos_Orden.RowCount - 1 Step 1

            If compararProd = DGV_Productos_Orden.Rows(i).Cells("codProducto").Value Then
                result = True
                Exit For
            End If
        Next
        If result = False Then
            Dim detalle As New DetalleOrden()
            detalle._producto._codProducto = DGV_Productos.CurrentRow.Cells("codProducto").Value
            detalle._producto._nombre = DGV_Productos.CurrentRow.Cells("nombre").Value
            detalle._cantidad = txt_cantidad.Text
            detalle._precio = DGV_Productos.CurrentRow.Cells("precioProveedor").Value

            DGV_Productos_Orden.Rows.Add(detalle._producto._codProducto, detalle._producto._nombre, detalle._cantidad, detalle._precio, (detalle._cantidad * detalle._precio))

        Else
            If MessageBox.Show("Ya se cargó el producto, ¿Desea Modificar?", "Atencion", MessageBoxButtons.YesNo) = DialogResult.Yes Then
                Dim index As Integer = Convert.ToInt32(DGV_Productos.Rows(DGV_Productos.CurrentRow.Index).Cells("codProducto").Value)
                For j As Integer = 0 To DGV_Productos_Orden.RowCount - 1 Step 1
                    If DGV_Productos_Orden.Rows(j).Cells("codProducto").Value = index Then
                        DGV_Productos_Orden.Rows(j).Cells("cantidad").Value = txt_cantidad.Text
                        DGV_Productos_Orden.Rows(j).Cells("total").Value = Convert.ToDouble(txt_cantidad.Text) * Convert.ToDouble(DGV_Productos_Orden.Rows(j).Cells("precio").Value)
                        Exit For
                    End If
                Next
            End If
        End If
        DGV_Productos.ClearSelection()
        DGV_Productos_Orden.ClearSelection()
        txt_cantidad.Text = ""
        lbl_unidad.Text = ""
        btn_quitar.Enabled = True
    End Sub

    Private Sub btn_quitar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_quitar.Click

        If DGV_Productos_Orden.SelectedRows.Count <> 0 Then
            DGV_Productos_Orden.Rows.Remove(DGV_Productos_Orden.CurrentRow)
            DGV_Productos_Orden.ClearSelection()
        End If
        If DGV_Productos_Orden.Rows.Count = 0 Then
            btn_quitar.Enabled = False
        End If
    End Sub

    Private Sub btn_guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_guardar.Click
        If DGV_Productos_Orden.Rows.Count <> 0 Then
            Try
                Dim ListaDetalleOrdenCompra As New List(Of DetalleOrden)
                For j As Integer = 0 To DGV_Productos_Orden.Rows.Count - 1 Step 1
                    Dim det As New DetalleOrden()
                    Dim prod As New Producto()
                    det._cantidad = DGV_Productos_Orden.Rows(j).Cells("cantidad").Value
                    det._precio = DGV_Productos_Orden.Rows(j).Cells("precio").Value
                    det._subtotal = DGV_Productos_Orden.Rows(j).Cells("total").Value
                    prod._codProducto = DGV_Productos_Orden.Rows(j).Cells("codProducto").Value
                    det._producto = prod
                    ListaDetalleOrdenCompra.Add(det)
                Next
                Dim ordenCompra As New OrdenCompra()
                ordenCompra._fecheNecesidad = DTP_fecha_necesidad.Value.Date
                ordenCompra._nroOrden = orden._nroOrden
                ordenCompra._detalle = ListaDetalleOrdenCompra
                acceso.actualizarOrdenCompra(ordenCompra)
                MessageBox.Show("Se actualizo la orden del proveedor: " & Environment.NewLine & prov._razonSocial, "ATENCION")
                Close()
            Catch ex As Exception
                MessageBox.Show(ex.ToString())
            End Try
        End If
    End Sub

    Private Sub DGV_Productos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DGV_Productos.Click
        If DGV_Productos.SelectedRows.Count <> 0 Then
            txt_cantidad.Text = ""
            lbl_unidad.Text = DGV_Productos.CurrentRow.Cells("unidadMedida").Value
            txt_cantidad.Focus()
        End If
    End Sub

    Private Sub btn_salir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_salir.Click
        Close()
    End Sub
End Class